package util;

import java.util.Date;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * Třída umožňující odeslání e-mailu z aplikace.
 *
 * @author Magda Kutišová
 */
public final class Email {

    private static final String SMTP_UZIVATEL = "uchazeciTest";
    private static final String SMTP_HESLO = "testovaciMail";

    /*************************************************************************
     * Sestaví a odešle e-mail.
     * @param mailServer poštovní server
     * @param odKoho adresa odesilatele
     * @param komu adresa příjemce
     * @param predmet předmět e-mailu
     * @param text text e-mailu
     * @throws MessagingException
     * @throws AddressException
     */
    public void posliMail(String mailServer, String odKoho, String komu, String predmet, String text) throws MessagingException, AddressException{
        Properties moznosti = System.getProperties();
        moznosti.put("mail.smtp.host", mailServer);
        moznosti.put("mail.transport.protocol", "smtp");
        moznosti.put("mail.smtp.auth", "true");

        Authenticator prihlaseni = new SMTPAuthenticator();
        Session session = Session.getDefaultInstance(moznosti, prihlaseni);

        Message zprava = new MimeMessage(session);
        zprava.setFrom(new InternetAddress(odKoho));
        zprava.addRecipient(Message.RecipientType.TO, new InternetAddress(komu));
        zprava.setSubject(predmet);
        zprava.setSentDate(new Date());

        zprava.setText(text);

        Transport.send(zprava);
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator{
        @Override
        public PasswordAuthentication getPasswordAuthentication(){
            String uzivatel = SMTP_UZIVATEL;
            String heslo = SMTP_HESLO;
            return new PasswordAuthentication(uzivatel, heslo);
        }
    }

}
